﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using HerGoS.Administration.Engine;
using HerGoS.ControlsUI;
using HerGoS.WebControlExtend;
using HerGoS.Administration.Entities;

namespace HerGoS.WebUI.Parametrizacion.Geografia
{
    public partial class Geografia_ABM : PageBase
    {

        #region Propiedades
        public List<Pais> Paises
        {
            get
            {
                if (ViewState["paises"] != null)
                    return (List<Pais>)ViewState["paises"];
                return null;
            }
            set
            {
                ViewState["paises"] = value;
            }

        }

        public List<Provincia> Provincias
        {  
            get
            {
                if (ViewState["provincias"] != null)
                    return (List<Provincia>)ViewState["provincias"];
                return null;
            }
            set
            {
                ViewState["provincias"] = value;
            }

        }
        public List<Ciudad> Ciudades
        {
            get
            {
                if (ViewState["ciudades"] != null)
                    return (List<Ciudad>)ViewState["ciudades"];
                return null;
            }
            set
            {
                ViewState["ciudades"] = value;
            }

        }






        #endregion
        
        
        
        
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                Initialize();
                LoadGridPais();
            }
         
            
        }
       
        void Initialize()
        {
                        
            this.GridPais.Settings( new GridViewExtBasic());
            this.GridPais.PageSize = 6;
            this.btnNuevoPais.Settings(new ButtonExtText());
            btnNuevaPronvincia.Settings(new ButtonExtText());
            btnNuevaCiudad.Settings(new ButtonExtText());
            GridProvincia.Settings(new GridViewExtBasic());
            GridProvincia.PageSize = 6;
            GridCiudades.Settings(new GridViewExtBasic());
            GridCiudades.PageSize = 6;
            btnRefreshCiudad.Settings(new ButtonExtText());
            btnRefrescarProvincia.Settings(new ButtonExtText());
            this.btnRefrescarPais.Settings(new ButtonExtText());

        }


        private void LoadGridPais()
        {            
           Paises = GestorPaises.Consultar();
           this.GridPais.DataSource = Paises;
            GridPais.DataBind();
        }

        private void LoadProvinciasByPais(int id)
        {
            Provincias = GestorProvincia.Consultar(id);
            this.GridProvincia.DataSource = Provincias;
            this.GridProvincia.DataBind();
        }


        private void LoadCiudadByProvincia(int id)
        {
            Ciudades = GestorCiudad.Consultar(id);
            this.GridCiudades.DataSource = Ciudades;
            this.GridCiudades.DataBind();
        }

        protected void GridPais_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButtonExt Editar = e.Row.FindControl("btnEditarPais") as ImageButtonExt;
                if (Editar != null)
                {
                    Editar.Settings(new ImageButtonExtEdit());
                    int oid = DataBinder.Eval(e.Row.DataItem, "OID").ToInteger();
                    Editar.OnClientClick = "EditarPais(" + oid.ToString() + "); return false;";
                }
                
                ImageButtonExt Seleccionar = e.Row.FindControl("btnSeleccionarPais") as ImageButtonExt;
                if (Seleccionar != null)
                {
                    Seleccionar.Settings(new ImageButtonExtSelect());
                }

                ImageButtonExt Borrar = e.Row.FindControl("btnBorrarPais") as ImageButtonExt;
                if (Borrar != null)
                {
                    Borrar.Settings(new ImageButtonExtDelete());
                }
            }
        }

        protected void GridProvincia_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButtonExt Editar = e.Row.FindControl("btnEditarProvincia") as ImageButtonExt;
                if (Editar != null)
                {
                    Editar.Settings(new ImageButtonExtEdit());
                    int oid = DataBinder.Eval(e.Row.DataItem, "OID").ToInteger();
                    Editar.OnClientClick = "EditarProvincia(" + oid.ToString() + "); return false;";
                }


                ImageButtonExt Seleccionar = e.Row.FindControl("btnSeleccionarProvincia") as ImageButtonExt;
                if (Seleccionar != null)
                {
                    Seleccionar.Settings(new ImageButtonExtSelect());
                }

                ImageButtonExt Borrar = e.Row.FindControl("btnBorrarProvincia") as ImageButtonExt;
                if (Borrar != null)
                {
                    Borrar.Settings(new ImageButtonExtDelete());
                }

            }
        }

        protected void btnSeleccionarPais_Click(object sender, EventArgs e)
        {
            ImageButton btn = (ImageButton)sender;
            int index = Convert.ToInt32(btn.CommandArgument);

            int id = Convert.ToInt32(GridPais.DataKeys[index].Values["OID"]);

            string nombre = Convert.ToString(GridPais.DataKeys[index].Values["Nombre"]);

        

            hidNombrePais.Value = nombre;
            this.hidIdPais.Value = id.ToString();

            this.hidProvinciaID.Value = string.Empty;
            this.hidNombreProvincia.Value = string.Empty;
            this.GridCiudades.DataSource = null;
            this.GridCiudades.DataBind();
            this.UpdatePanelCiudad.Update();

            LoadProvinciasByPais(id);
            this.UpdatePanelProvincia.Update();

        }


        protected void btnSeleccionarProvincia_Click(object sender, EventArgs e)
        {
            ImageButton btn = (ImageButton)sender;
            int index = Convert.ToInt32(btn.CommandArgument);

            int id = Convert.ToInt32(GridProvincia.DataKeys[index].Values["OID"]);

            string nombre = Convert.ToString(GridProvincia.DataKeys[index].Values["Nombre"]);
                        
          
            hidNombreProvincia.Value = nombre;
            this.hidProvinciaID.Value = id.ToString();


            LoadCiudadByProvincia(hidProvinciaID.Value.ToInteger());
            UpdatePanelCiudad.Update();
         }

      

        

        protected void GridCiudades_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                ImageButtonExt Editar = e.Row.FindControl("btnEditarCiudad") as ImageButtonExt;
                if (Editar != null)
                {
                    Editar.Settings(new ImageButtonExtEdit());
                    int oid = DataBinder.Eval(e.Row.DataItem, "OID").ToInteger();
                    Editar.OnClientClick = "EditarCiudad(" + oid.ToString() + "); return false;";
                }

                ImageButtonExt Borrar = e.Row.FindControl("btnBorrarCiudad") as ImageButtonExt;
                if (Borrar != null)
                {
                    Borrar.Settings(new ImageButtonExtDelete());
                }


            }
        
        }



        protected void btnBorrarPais_Click(object sender, EventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;
                int index = Convert.ToInt32(btn.CommandArgument);
                int id = Convert.ToInt32(this.GridPais.DataKeys[index].Value);
               
                Pais  pais = Paises.Find(c => c.OID == id);
                Paises.Remove(pais);


                GestorPaises.Eliminar(pais);
                this.LoadGridPais();
            }
            catch(Exception ex){
            }

        }

        protected void btnBorrarProvincia_Click(object sender, EventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;
                int index = Convert.ToInt32(btn.CommandArgument);
                int id = Convert.ToInt32(this.GridProvincia.DataKeys[index].Value);

                Provincia provincia = Provincias.Find(c => c.OID == id);
                Provincias.Remove(provincia);
                
                GestorProvincia.Eliminar(provincia);
                this.LoadProvinciasByPais(this.hidIdPais.Value.ToInteger());
            }
            catch (Exception ex)
            {
            }

        }
       

        protected void btnBorrarCiudad_Click(object sender, EventArgs e)
        {
            try
            {
                ImageButton btn = (ImageButton)sender;
                int index = Convert.ToInt32(btn.CommandArgument);
                int id = Convert.ToInt32(this.GridCiudades.DataKeys[index].Value);

                Ciudad ciudad = Ciudades.Find(c => c.OID == id);
                Ciudades.Remove(ciudad);

                GestorCiudad.Eliminar(ciudad);
                this.LoadCiudadByProvincia(this.hidProvinciaID.Value.ToInteger());
            }
            catch (Exception ex)
            {
            }

        }


        protected void btnRefrescarPais_Click(object sender, EventArgs e)
        {
            LoadGridPais();
            this.UpdatePanelPais.Update();
        }
        

        protected void btnRefreshCiudad_Click(object sender, EventArgs e)
        {
            LoadCiudadByProvincia(hidProvinciaID.Value.ToInteger());
            this.UpdatePanelCiudad.Update();
        }


        protected void btnRefrescarProvincia_Click(object sender, EventArgs e)
        {
            int id = this.hidIdPais.Value.ToInteger();
            LoadProvinciasByPais(id);
            this.UpdatePanelProvincia.Update();
        }


        protected void GridPais_PageIndexChanging(Object sender, GridViewPageEventArgs e)
        {
            GridPais.PageIndex = e.NewPageIndex;
            this.LoadGridPais();
        }

        
        protected void GridProvincia_PageIndexChanging(Object sender, GridViewPageEventArgs e)
        {
            GridProvincia.PageIndex = e.NewPageIndex;
            this.LoadProvinciasByPais(this.hidIdPais.Value.ToInteger());
        }


        protected void GridCiudades_PageIndexChanging(Object sender, GridViewPageEventArgs e)
        {
            GridCiudades.PageIndex = e.NewPageIndex;
            this.LoadCiudadByProvincia(this.hidProvinciaID.Value.ToInteger());
        }



    }
}